import cv2 as cv
import numpy as np
# 透视变换
src = cv.imread("cai.webp")
rows, cols = src.shape[:2]
print(rows, cols)

# 定义透视变换前的数据点集合
pts1 = np.float32([[82, 122], [132, 112], [97, 170], [138, 169]])
# 定义透视变换后的数据点集合
pts2 = np.float32([[82, 122], [132, 117], [97, 168], [136, 163]])

# 计算透视变换矩阵
M = cv.getPerspectiveTransform(pts1, pts2)
# 应用透视变换
result = cv.warpPerspective(src, M, (cols, rows))  # 使用原图尺寸进行变换

# 显示原图和结果图
cv.namedWindow('Original Image', cv.WINDOW_NORMAL)
cv.resizeWindow('Original Image', 500, 500)
cv.imshow('Original Image', src)

cv.namedWindow('Perspective Result', cv.WINDOW_NORMAL)
cv.resizeWindow('Perspective Result', 500, 500)
cv.imshow('Perspective Result', result)

cv.waitKey(0)
cv.destroyAllWindows()